package com.san.warnings.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.san.common.utils.Query;
import com.san.warnings.domain.WarningsBusiDO;
import com.san.warnings.domain.WarningsFollowDO;
import com.san.warnings.domain.WarningsModelDO;

@Mapper
public interface WarningsDao {

	/**
	 * 查询预警模型
	 * 
	 * @param query
	 * @return
	 */
	List<WarningsModelDO> list(Query query);

	/**
	 * 查询预警模型总数
	 * 
	 * @param query
	 * @return
	 */
	int count(Query query);

	/**
	 * 保存预警模型
	 * 
	 * @param warningsModelDO
	 * @return
	 */
	int save(WarningsModelDO warningsModelDO);

	/**
	 * 变更模型启用状态
	 * 
	 * @param warningsModelDO
	 * @return
	 */
	int changeStatus(WarningsModelDO warningsModelDO);

	/**
	 * 获取模型信息ById
	 * 
	 * @param warnId
	 * @return
	 */
	WarningsModelDO getById(Long warnId);

	/**
	 * 批量删除模型指标
	 * 
	 * @param modelId
	 * @return
	 */
	int batchBusiRemove(Long modelId);

	/**
	 * 批量添加模型指标
	 * 
	 * @param modelId
	 * @param warningsBusiDOList
	 * @return
	 */
	int batchBusiAdd(List<WarningsBusiDO> warningsBusiDOList);

	/**
	 * 查询预警模型指标
	 * 
	 * @param query
	 * @return
	 */
	List<WarningsBusiDO> listBusi(Query query);

	/**
	 * 查询预警模型指标总数
	 * 
	 * @param query
	 * @return
	 */
	int countBusi(Query query);

	/**
	 * 查询已订阅的预警模型
	 * 
	 * @param query
	 * @return
	 */
	List<WarningsModelDO> listFollow(Query query);

	/**
	 * 查询已订阅的预警模型总数
	 * 
	 * @param query
	 * @return
	 */
	int countFollow(Query query);

	/**
	 * 预警订阅操作
	 * 
	 * @param warningFollowDO
	 * @return
	 */
	int followAdd(WarningsFollowDO warningsFollowDO);

	/**
	 * 预警退订操作
	 * 
	 * @param warningFollowDO
	 * @return
	 */
	int followRemove(WarningsFollowDO warningsFollowDO);

	/**
	 * 获取信用预警审核列表
	 * 
	 * @param query
	 * @return
	 */
	List<WarningsFollowDO> listFollowReview(Query query);

	/**
	 * 获取信用预警审核信息总数
	 * 
	 * @param query
	 * @return
	 */
	int countFollowReview(Query query);

	/**
	 * 审核信用预警订阅状态
	 * 
	 * @param warningFollowDO
	 * @return
	 */
	int reviewFollowStatus(WarningsFollowDO warningFollowDO);

	/**
	 * 查询所以已订阅的预警
	 * @return
	 */
	List<WarningsModelDO> listAllFollow();

}
